﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Collections.ObjectModel;

namespace Airport
{
    [ServiceContract(SessionMode=SessionMode.Required,
        CallbackContract=typeof(IAirportCallback))]
    public interface IAirportService
    {
        [OperationContract(IsOneWay = true)]
        void RegisterForFlightUpdates();
        [OperationContract(IsOneWay = true)]
        void UnregisterForFlightUpdates();

        [OperationContract(IsOneWay = true)]
        void RegisterForPlaneUpdates();

        // Method to get airport layout on startup
        [OperationContract(IsOneWay = true)]
        void GetAirportLayout();

        [OperationContract(IsOneWay = true)]
        void GetCurrentPlaneList();

        [OperationContract(IsOneWay = false)]
        Map GetAirportLayoutReqestReply();

        [OperationContract(IsOneWay = true)]
        void GetSuggestion(Plane updatedPlane, Node destinationNode);

        [OperationContract(IsOneWay = true)]
        void AcceptSuggestion(Suggestion acceptedSuggestion);
    }    
}
